node_mt = {
  private = {
    __type = "node",
  },
  __index = function(t,k)
    return node_mt.private[k]
  end,
  __tostring =function(self)
    return string.format("node[%s]",tostring(self.uid))
  end
} 

function node(uid,data)
  local node = {}
  node.uid =  uid
  node.data = data
  setmetatable(node,node_mt)
  return node
end
